package com.zhentao.vo;

import lombok.Data;

import java.util.List;
import java.util.Map;

/**
 * 变更统计VO
 * @author zhentao
 * @date 2024-12-19
 */
@Data
public class ChangeStatisticsVO {
    
    /**
     * 统计时间范围（天数）
     */
    private Integer days;
    
    /**
     * 总变更次数
     */
    private Long totalChanges;
    
    /**
     * 按变更类型统计
     */
    private Map<String, Long> changeTypeStats;
    
    /**
     * 按目标类型统计
     */
    private Map<String, Long> targetTypeStats;
    
    /**
     * 按变更人统计（Top 10）
     */
    private List<UserChangeStatVO> topChangers;
    
    /**
     * 按业务来源统计
     */
    private Map<String, Long> businessSourceStats;
    
    /**
     * 每日变更趋势
     */
    private List<DailyChangeStatVO> dailyTrend;
    
    /**
     * 热点参数统计（变更最频繁的参数）
     */
    private List<HotParamStatVO> hotParams;
    
    /**
     * 用户变更统计VO
     */
    @Data
    public static class UserChangeStatVO {
        /**
         * 用户名
         */
        private String userName;
        
        /**
         * 变更次数
         */
        private Long changeCount;
        
        /**
         * 最后变更时间
         */
        private String lastChangeTime;
    }
    
    /**
     * 每日变更统计VO
     */
    @Data
    public static class DailyChangeStatVO {
        /**
         * 日期
         */
        private String date;
        
        /**
         * 变更次数
         */
        private Long changeCount;
        
        /**
         * 涉及参数数量
         */
        private Long paramCount;
        
        /**
         * 活跃用户数
         */
        private Long activeUsers;
    }
    
    /**
     * 热点参数统计VO
     */
    @Data
    public static class HotParamStatVO {
        /**
         * 目标类型
         */
        private String targetType;
        
        /**
         * 目标标识
         */
        private String targetKey;
        
        /**
         * 目标名称
         */
        private String targetName;
        
        /**
         * 变更次数
         */
        private Long changeCount;
        
        /**
         * 最后变更时间
         */
        private String lastChangeTime;
        
        /**
         * 主要变更类型
         */
        private String mainChangeType;
    }
}

